#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int isPrime(int n);//判断n是否质数
long long huiWen(int n);//例如：n等于123，返回12321这样一个回文数
long myPow(int x);//计算并返回10^x
int isPrime(int n)
{
    int x,i;
    x=sqrt(n);
    for(i=2;i<=x;i++)
    {
        if(n%i==0) return 0;
    }
    return 1;
}
long long huiWen(int n)//例如：n等于123，返回12321这样一个回文数
{
    long long ans=n;
    n=n/10;
    while(n>0){
        ans=ans*10+n%10;
        n=n/10;
    }
    return ans;
}
long myPow(int x)//计算并返回10^x
{
    int i;
    long ans=1;
    for(i=0;i<x;i++) ans=ans*10;
    return ans;
}
int main(){
    int n;
    long begin,end,i;
    long long a[8000]={0},count;
    long long temp=0;    
    scanf("%d",&n);

    if(n==2) printf("1\n11\n");
    else if(n%2==0) printf("0\n");
    else if(n==1) printf("4\n2 3 5 7\n");
    else{
        n=(n+1)/2;
        begin=myPow(n-1);
        end=myPow(n);
        count=0;
        for(i=begin;i<end;i++){
            temp=huiWen(i);
            if(isPrime(temp)==1) {
                a[count]=temp; count++;
            }
        }
        printf("%d\n",count);
        for(i=0;i<count;i++){
            printf("%d ",a[i]);
        }
    }
    return 0;
}